package pattern.creational.simpleFactory;

/**
 * 生产Video的简单工厂
 *
 * @Author Gavin
 * @date 2020.07.14 12:39
 */
public class VideoFactory {
    //第一种方法:违背开闭原则
    public Video getVideo(String type) {
        if ("java".contentEquals(type)) {
            return new JavaVideo();
        } else if ("python".equalsIgnoreCase(type)) {
            return new Python();
        }
        return null;
    }

    //第二种方法:通过反射的方法，可以解决第一步中违背的开闭原则
    public Video getVideoByReflect(Class c) {
        Video video = null;
        try {
            System.out.println(c.getName());
            video = (Video) Class.forName(c.getName()).newInstance();
        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return video;
    }
}
